#ifndef FACT_WITH_MASK_SEARCHER_HPP_GUARD
#define FACT_WITH_MASK_SEARCHER_HPP_GUARD

#include "visitor.hpp"
#include "literal.hpp"

#include <string>
		
namespace mashine { namespace kb { 

namespace search {

/**
 * this class provice interface that need realize to 
 * execute your own search way
 */
class FactWithMaskSearchVisitor : public mashine::kb::search::SearchVisitor<mashine::kb::Literal *, mashine::kb::Literal>
{
public: 
	/**
	 * create visitor that search facts with specified name
	 * by default name = * (select all facts)
	 */
	FactWithMaskSearchVisitor(mashine::kb::Literal Literal);
	
	/**
	 * get array of facts selected from kBase
	 */
	virtual std::vector<mashine::kb::Literal *> search(mashine::kb::KnowledgeBase * kBase);
};

}}}			// Don't forget about brackets)) 

#endif